<?php

/**
 * Hello World Controller
 */
class CategoryController extends ControllerBase
{
	/**
	 * Initialisiert den Controller
	 */
	public function Init()
	{
		$this->SetAuthRequired(true);
	}

	/**
	 * Index Methode wird aufgerufen wenn Index
	 * oder keine Action angefordert wurde.
	 */
	public function Index()
	{
		$res = new ViewResponse();
		
		$dao = new DAO_Kategorie();
		
		$this->Kategorien = $dao->Laden();
		
		$res->view = $this->View("category_index");
			
		return $res;
	}
	
	/**
	 * Verarbeitet die Detailansicht für eine Kategorie
	 * @return ViewResponse gibt das Response Objekt für die Ausgabe zurück
	 */
	public function Detail()
	{
		$res = new ViewResponse();
		
		// DAO instanziieren
		$katdao = new DAO_Kategorie();
		
		if ($_REQUEST["k_id"] > 0)
		{
			// Kategorie laden
			$this->Kategorie = $katdao->KategorieLaden($_REQUEST["k_id"]);
		}
		else
		{
			// Neue Kategorie erstellen
			$this->Kategorie = new Kategorie();
		}
		
		if ($this->Kategorie != null)
		{
			$res->view = $this->View("category_detail");
			$res->data["id"] = $this->Kategorie->ID;
		}
		else
		{
			$res->view = $this->View("no_data", "Kategorie wurde nicht gefunden.");
		}
		
		return $res;
	}
	
	// Speichert die Kategorie
	public function SaveCategory()
	{
		$res = new ViewResponse();
		
		try
		{
			$cat = Kategorie::CreateFromRequest();
			
			$dao = new DAO_Kategorie();
			$catId = $dao->Speichern($cat);
			
			if ($dao->HasErrors())
				$res->error = join("<br/>", $dao->GetErrors());
			else
				$res->data["id"] = $catId;
				
		}
		catch (Exception $ex)
		{
			$res->error = "Fehler beim Speichern der Kategorie<br/>" . $ex;
		}
			
		
		return $res;
	}
	
	// Entfernt die Kategorie
	public function DeleteCategory()
	{
		$res = new ViewResponse();
		
		if (!isset($_REQUEST["k_id"]) || $_REQUEST["k_id"] < 0)
		{
			$res->error = "Fehler beim aufruf der Aktion.";
			return $res;
		}
		
		try
		{
			$dao = new DAO_Kategorie();
			$dao->Entfernen($_REQUEST["k_id"]);
		}
		catch (Exception $ex)
		{
			$res->error = "Fehler beim Speichern des Produktes";
		}
			
		
		return $res;
	}
}

?>